home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1995 June / MacFormat 25.iso / Shareware City / Developers / fortran-to-c-translator-11 / Mac F2C 1.1 / Test Project ƒ / main.c < prev    next >
Text File  |  1995-01-23  |  2KB  |  145 lines

  1. /* STARTUP PROCEDURE FOR UNIX FORTRAN PROGRAMS */
  2.  
  3. #include "stdio.h"
  4. #include "signal.h"
  5.  
  6. #ifndef SIGIOT
  7. #ifdef SIGABRT
  8. #define SIGIOT SIGABRT
  9. #endif
  10. #endif
  11.  
  12. #if defined(THINK_C) || defined(THINK_CPLUS)
  13. #include <console.h>    /* IMT 2 Dec 94 Needed to make command line work under THINK */
  14. #endif
  15.  
  16. #ifdef __MWERKS__        /* IMT 2 Dec 94 Needed for MetroWerks (from Dirk Froehling) */
  17. #include <SIOUX.h>
  18. #endif
  19.  
  20. #ifndef KR_headers
  21. #include "stdlib.h"
  22. #endif
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. #ifdef NO__STDC
  28. #define ONEXIT onexit
  29. extern void f_exit();
  30. #else
  31. #ifndef KR_headers
  32. extern void f_exit(void);
  33. #ifndef NO_ONEXIT
  34. #define ONEXIT atexit
  35. extern int atexit(void (*)(void));
  36. #endif
  37. #else
  38. #ifndef NO_ONEXIT
  39. #define ONEXIT onexit
  40. extern void f_exit();
  41. #endif
  42. #endif
  43. #endif
  44.  
  45. #ifdef KR_headers
  46. extern void f_init(), sig_die();
  47. extern int MAIN__();
  48. #define Int /* int */
  49. #else
  50. extern void f_init(void), sig_die(char*, int);
  51. extern int MAIN__(void);
  52. #define Int int
  53. #endif
  54.  
  55. static void sigfdie(Int n)
  56. {
  57. sig_die("Floating Exception", 1);
  58. }
  59.  
  60.  
  61. static void sigidie(Int n)
  62. {
  63. sig_die("IOT Trap", 1);
  64. }
  65.  
  66. #ifdef SIGQUIT
  67. static void sigqdie(Int n)
  68. {
  69. sig_die("Quit signal", 1);
  70. }
  71. #endif
  72.  
  73.  
  74. static void sigindie(Int n)
  75. {
  76. sig_die("Interrupt", 0);
  77. }
  78.  
  79. static void sigtdie(Int n)
  80. {
  81. sig_die("Killed", 0);
  82. }
  83.  
  84. #ifdef SIGTRAP
  85. static void sigtrdie(Int n)
  86. {
  87. sig_die("Trace trap", 1);
  88. }
  89. #endif
  90.  
  91.  
  92.  
  93. int xargc;
  94. char **xargv;
  95.  
  96. #ifdef KR_headers
  97. main(argc, argv) int argc; char **argv;
  98. #else
  99. main(int argc, char **argv)
  100. #endif
  101. {
  102.  
  103. #if defined(THINK_C) || defined(THINK_CPLUS) || defined(__MWERKS__)
  104.  
  105.     argc = ccommand( &argv );        /* IMT 2 Dec 94 Think/Codewarrior mod */
  106.  
  107. #endif /* Macintosh C compilers */
  108.  
  109. xargc = argc;
  110. xargv = argv;
  111. signal(SIGFPE, sigfdie);    /* ignore underflow, enable overflow */
  112. #ifdef SIGIOT
  113. signal(SIGIOT, sigidie);
  114. #endif
  115. #ifdef SIGTRAP
  116. signal(SIGTRAP, sigtrdie);
  117. #endif
  118. #ifdef SIGQUIT
  119. if(signal(SIGQUIT,sigqdie) == SIG_IGN)
  120.     signal(SIGQUIT, SIG_IGN);
  121. #endif
  122. if(signal(SIGINT, sigindie) == SIG_IGN)
  123.     signal(SIGINT, SIG_IGN);
  124. signal(SIGTERM,sigtdie);
  125.  
  126. #ifdef pdp11
  127.     ldfps(01200); /* detect overflow as an exception */
  128. #endif
  129.  
  130. f_init();
  131. #ifndef NO_ONEXIT
  132. ONEXIT(f_exit);
  133. #endif
  134. MAIN__();
  135. #ifdef NO_ONEXIT
  136. f_exit();
  137. #endif
  138. exit(0);    /* exit(0) rather than return(0) to bypass Cray bug */
  139. return 0;    /* For compilers that complain of missing return values; */
  140.         /* others will complain that this is unreachable code. */
  141. }
  142. #ifdef __cplusplus
  143.     }
  144. #endif
  145.